<?php
echo '
          <h2>Gestion des plugins</h2>
          <div id="plugins">';

if (isset($_GET['lock']))
{
  $lockPlugin = cleanVar(urldecode($_GET['lock']));
  if (!empty($lockPlugin) && file_exists('plugin/'.$lockPlugin) && is_dir('plugin/'.$lockPlugin))
    {
      if (is_writable('plugin/'.$lockPlugin))
	{
	  touch('plugin/'.$lockPlugin.'/lock');
	}
      else
	echo '<span class="error">Impossible d\'écrire dans le répertoire du plugin. Autorisez l\'accès en écriture et recommencez, ou créez un fichier "lock" dans le répertoire du plugin pour le désactiver.</span>';
    }
}

if (isset($_GET['unlock']))
{
  $unlockPlugin = cleanVar(urldecode($_GET['unlock']));
  if (!empty($unlockPlugin) && file_exists('plugin/'.$unlockPlugin) && is_dir('plugin/'.$unlockPlugin))
    {
      if (file_exists('plugin/'.$unlockPlugin.'/pluginDetail.xml'))
	{
	  $xml = simplexml_load_file('plugin/'.$unlockPlugin.'/pluginDetail.xml');
	  $fichiersSQL = isset($xml->sql) ? $xml->sql : null;
	  if (!empty($fichiersSQL))
	    {
	      $tables = isset($xml->tables) ? $xml->tables : null;
	      if (!is_null($tables))
		{
		  $sql = SQL::GetInstance();

		  foreach ($tables->table as $tableName)
		    {
		      $req = 'DESC '.$sql->getPrefix().$tableName;
		      if (mysql_query($req) === false)
			{
			  foreach ($fichiersSQL->file as $filename)
			    {
			      if (file_exists('plugin/'.$unlockPlugin.'/'.$filename))
				{
				  $scriptSQL = file_get_contents('plugin/'.$unlockPlugin.'/'.$filename);
				  $scriptSQL = str_replace('#_', $sql->getPrefix(), $scriptSQL);
				  mysql_query($scriptSQL);
				}
			    }
			}
		    }
		} 
	    }
	  if (!empty($auteurPlugin) && !empty($mailAuteur))
	    {
	      $auteurPlugin = '<a href="mailto:'.$mailAuteur.'">'.$auteurPlugin.'</a>';
	    }
	}
      if (is_writable('plugin/'.$unlockPlugin))
	{
	  unlink('plugin/'.$unlockPlugin.'/lock');
	}
      else
	echo '<span class="error">Impossible d\'écrire dans le répertoire du plugin. Autorisez l\'accès en écriture et recommencez, ou supprimez le fichier "lock" dans le répertoire du plugin pour l\'activer.</span>';
    }
}

// Le formulaire
$form = new HTML_QuickForm('pluginInstall','post','admin.php?page=plugins');

$form->setRequiredNote('<span style="font-size:80%; color:#ff0000;">*</span><span style="font-size:80%;"> champs obligatoires</span>');
$form->setJsWarnings('Erreur de saisie :','Cliquez sur OK pour corriger');

$form->addElement('file', 'newPlugin', ' Archive du plugin : ');
$form->addRule('newPlugin', 'Vous devez séléctionner une archive', 'required', '', 'client');
if($form->validate())
{
  $archive = $form->exportValue('newPlugin');
  $ok = true;

  // Pas encore fait...
  $ok = false;
  //

  if($ok) echo '<span class="confirm">Plugin installé avec succès !</span>';
  if(!$ok) echo '<span class="error">Il y a eu une ou plusieurs erreurs !</span>';
      
}

$form->addElement('submit', 'submit', 'Uploader et installer le plugin');
echo '
            <fieldset>
              <legend>Installer un nouveau plugin</legend>';
$form->display();
echo '
            </fieldset>';
  
echo '
            <table border="0" cellpadding="0" cellspacing="0">
              <tr>
                <th class="txtCourt">Nom</th>
                <th class="ico">Actif</th>
                <th class="ico">Version</th>
                <th class="txtCourt">Auteur</th>
                <th class="txtLong">Description</th>
              </tr>';

// Récupération des plugins disponibles
if($dir_plugins = scandir('plugin'))
{
  foreach($dir_plugins as $dossier)
    {
      if (!eregi('^\.', $dossier) && is_dir('plugin/'.$dossier))
	{
	  if (file_exists('plugin/'.$dossier.'/pluginDetail.xml'))
	    {
	      $xml = simplexml_load_file('plugin/'.$dossier.'/pluginDetail.xml');
	      $nomPlugin     = isset($xml->name)        ? $xml->name        : $dossier;
	      $descPlugin    = isset($xml->description) ? $xml->description : '';
	      $auteurPlugin  = isset($xml->author)      ? $xml->author      : '';
	      $versionPlugin = isset($xml->version)     ? $xml->version     : '';
	      $mailAuteur    = isset($xml->authorEmail) ? $xml->authorEmail : '';
	      if (!empty($auteurPlugin) && !empty($mailAuteur))
		{
		  $auteurPlugin = '<a href="mailto:'.$mailAuteur.'">'.$auteurPlugin.'</a>';
		}
	    }
	  else
	    {
	      $nomPlugin = $dossier;
	      $descPlugin = $auteurPlugin = $versionPlugin = '-';
	    }
	  $locked = glob('plugin/'.$dossier.'/lock');
	  $locked = !empty($locked);
	  echo '
              <tr>
                <td class="txtCourt">'.$nomPlugin.'</td>
                <td class="ico">'.($locked ? '<a href="admin/?page=plugins&amp;unlock='.urlencode($dossier).'"><img src="admin/img/cross.png" alt="no" /></a>' : '<a href="admin/?page=plugins&amp;lock='.urlencode($dossier).'"><img src="admin/img/tick.png" alt="yes" /></a>').'</td>
                <td class="ico">'.$versionPlugin.'</td>
                <td class="txtCourt">'.$auteurPlugin.'</td>
                <td>'.$descPlugin.'</td>
              </tr>';
	}
    }
}
  
echo '
            </table>
            [BETA]<br />
            Ceci est une version beta de phpLister, certaines fonctions ne sont pas encore implémentées,<br />
            certaines parties ne sont pas entièrement traduites,<br />
            certaines fonctions sont en test,<br />
            les plugins ne sont pas finalisés non plus.
          </div>';
?>
